package com.cykj.eurekaribbon.utils.image_detection;

import com.cykj.eurekaribbon.bean.FrontUser;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.ims.v20201229.ImsClient;
import com.tencentcloudapi.ims.v20201229.models.*;

/**
 * @version 1.0
 * @author: zhiMing
 * @date: 2021/9/23 1:00
 * @desc: 图片验证工具类
 */
public class ImageModeration {
    /*
    * ims.tencentcloudapi.com
    * application/json 必须使用签名方法 v3（TC3-HMAC-SHA256）
    * GET 请求的请求包大小不得超过32KB、POST 请求使用签名方法 v3（TC3-HMAC-SHA256）时支持10MB
    * 使用UTF-8编码。
    * */

    public static String postImageModeration(String fileContent, String fileUrl, FrontUser frontUser){
        String resMsg = null;
        try{
            // 实例化一个认证对象，入参需要传入腾讯云账户secretId，secretKey,此处还需注意密钥对的保密
            // 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取
            Credential cred = new Credential("AKIDGLAj12mGUR7VdU4NQChvta091PXOyNZV", "h9KFtGMCqFQN4WjgNnytZz96oGSP7ann");
            // 实例化一个http选项，可选的，没有特殊需求可以跳过
            HttpProfile httpProfile = new HttpProfile();
            httpProfile.setEndpoint("ims.tencentcloudapi.com");
            // 实例化一个client选项，可选的，没有特殊需求可以跳过
            ClientProfile clientProfile = new ClientProfile();
            clientProfile.setHttpProfile(httpProfile);
            // 实例化要请求产品的client对象,clientProfile是可选的 // "ap-guangzhou"：接入广州的地域
            ImsClient client = new ImsClient(cred, "ap-guangzhou", clientProfile);
            // 实例化一个请求对象,每个接口都会对应一个request对象
            ImageModerationRequest req = new ImageModerationRequest();
            /* 该字段表示待检测图片文件内容的Base64编码，图片大小不超过5MB  该字段与FileUrl必须选择输入其中一个。*/
            if (fileContent!=null){
                System.out.println(fileContent);
                req.setFileContent(fileContent);
            }
            /* 图片的url，测试头像：https://thirdwx.qlogo.cn/mmopen/vi_32/b9KoSo6KV9BMCyjzbSQZ2MNd01DX3GzNYvWXO9bKP9iaZ7YKwFnL6jv9E733E6sUO9OJJkWqfhR5WzT3MhNHa9g/132 */
            if (fileUrl != null){
                req.setFileUrl(fileUrl);
            }
            if (frontUser !=null){
                /* 用户信息 */
                User user = new User();
                user.setUserId(frontUser.getId()+"");
                user.setPhone(frontUser.getTelephoneNumber());
                req.setUser(user);
            }


            // 返回的resp是一个ImageModerationResponse的实例，与请求对象对应
            ImageModerationResponse resp = client.ImageModeration(req);
            // 输出json格式的字符串回包
            System.out.println(ImageModerationResponse.toJsonString(resp));
            resMsg =  ImageModerationResponse.toJsonString(resp);
        } catch (TencentCloudSDKException e) {
            System.out.println(e.toString());
        }
        return resMsg;
    }


}
